/**    
 * 文件名：MatCombine.java    
 *    
 * 版本信息：    
 * 日期：2014年3月27日    
 * xyj 足下 xyj 2014     
 * 版权所有    
 *    
 */
package learn.visual.words;

import static com.googlecode.javacv.cpp.opencv_core.cvReleaseMat;

import com.googlecode.javacv.cpp.opencv_core.CvMat;

/**
 * @项目名称：opencv-test
 * @类名称：MatCombine
 * @类描述：
 * @创建人：zhuyi
 * @创建时间：2014年3月27日 下午4:06:24
 * @修改人：zhuyi
 * @修改时间：2014年3月27日 下午4:06:24
 * @修改备注：
 * @version
 * 
 */
public class MatCombine {

    public static CvMat combineRows(CvMat mat1, CvMat mat2) {
        CvMat mat = CvMat.create(mat1.rows() + mat2.rows(), mat1.cols(), mat1.depth());

        for (int i = 0; i < mat1.rows(); i++) {
            for (int j = 0; j < mat1.cols(); j++) {
                int v = (int) mat1.get(i, j);
                mat.put(i, j, v);
            }
        }

        for (int i = 0; i < mat2.rows(); i++) {
            for (int j = 0; j < mat2.cols(); j++) {
                int v = (int) mat2.get(i, j);
                mat.put(mat1.rows() + i, j, v);
            }
        }

        cvReleaseMat(mat1);
        cvReleaseMat(mat2);

        return mat;
    }

    public static void main(String[] args) {

        CvMat mat1 = CvMat.create(2, 2);
        mat1.put(0, 0, 1);
        mat1.put(0, 1, 2);
        mat1.put(1, 0, 3);
        mat1.put(1, 1, 4);

        System.out.println(mat1);

        CvMat mat2 = CvMat.create(2, 2);
        mat2.put(0, 0, 5);
        mat2.put(0, 1, 6);
        mat2.put(1, 0, 7);
        mat2.put(1, 1, 8);

        System.out.println(mat2);

        CvMat mat = combineRows(mat1, mat2);
        System.out.println(mat);

    }

}
